/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package mx.uam.ayd.dulceria.persistencia.dao;

import mx.uam.ayd.dulceria.dominio.Producto;
import java.util.List;

/**
 *
 * @author christian
 */
public interface ProductoDAO {
    /**
     * metodo para aniadir un Producto en la base de datos
     * @param p el Producto que se va a añadir
     * @return true si se pudo añadir, false en otro caso
     */
    public boolean crea(Producto p);

    /**
     * metodo para recuperar un Producto de la base de datos
     * @param nombre nombre del producto que se busca
     * @return el producto encontrado o null
     */
    public Producto recupera(String nombre);

    /**
     * metodo para recuperar un Producto de la base de datos
     * @param id identificador del producto que tiene asignado en la tabla
     * @return el producto encontrado o null
     */
    public Producto recupera(int id);

    /**
     * metodo para buscar productos cuyo nombre sea parecido al indicado
     * @return una lista de producto encontrados, o null
     */
    public List<Producto> busca(String nombre);

    /**
     * metodo para actualizar el estado de un producot en la base de datos
     * @param p el producto que se va a ctualizar
     * @return true si la actualizacion se pudo lograr, false en otro caso
     */
    public boolean actualiza(Producto p);

    /**
     * metodo que elimina un producto de la base de datos
     * @param p el producto que se desea eliminar
     * @return true si se logro eliminar, false en otro caso
     */
    public boolean borra(Producto p);

    /**
     * metodo para recuperar todos los Productos de la base de datos
     * @return lista con los Productos recuperados
     */
    public List <Producto>recuperaTodos();
}
